package org.bits.model;

import java.util.List;

import org.bits.data.*;

/*******************************************************************************
 * 
 ******************************************************************************/
public interface DataAccessModel
{
    /***************************************************************************
     * @return
     **************************************************************************/
    public List<Product> getProducts();

    /***************************************************************************
     * @param product
     * @return
     **************************************************************************/
    public List<Release> getReleases( Product product );

    /***************************************************************************
     * @param r
     * @return
     **************************************************************************/
    public List<String> getBuilds( Release r );

    /***************************************************************************
     * @param filter
     * @return
     **************************************************************************/
    public List<Issue> filterIssues( Filter<Issue> filter );

    /***************************************************************************
     * @param filter
     * @return
     **************************************************************************/
    public List<Finding> filterFindings( Filter<Finding> filter );

    /***************************************************************************
     * @param filter
     * @return
     **************************************************************************/
    public List<Task> filterTasks( Filter<Task> filter );

    /***************************************************************************
     * @return
     **************************************************************************/
    public List<Issue> filterAuthorizations( Filter<Issue> filter );

    /***************************************************************************
     * @return
     **************************************************************************/
    public User getCurrentUser();

    /***************************************************************************
     * @param issue
     **************************************************************************/
    public void addIssue( Issue issue );

    /***************************************************************************
     * @param finding
     **************************************************************************/
    public void addFinding( Finding finding );
}
